//package nm.aleksey.server;
//
//import javax.persistence.EntityManager;
//
//import nm.aleksey.domain.Book;
//
//import com.google.appengine.api.datastore.Key;
//import com.google.appengine.api.datastore.KeyFactory;
//import com.google.web.bindery.requestfactory.shared.Locator;
//
//public class BookLocator extends Locator<Book, String> {
//
//  public static final EntityManager entityManager() {
//    return EMF.getInstance().get().createEntityManager();
//  }
//
//  @Override
//  public Book create(Class<? extends Book> clazz) {
//    try {
//      return clazz.newInstance();
//    } catch (InstantiationException e) {
//      throw new RuntimeException(e);
//    } catch (IllegalAccessException e) {
//      throw new RuntimeException(e);
//    }
//  }
//
//  public void delete(Book book) {
//    if (book == null) {
//      return;
//    }
//    EntityManager em = entityManager();
//    try {
//      Book attached = em.find(Book.class, book.getId());
//      em.remove(attached);
//    } catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      em.close();
//    }
//  }
//
//  @Override
//  public Book find(Class<? extends Book> clazz, String id) {
//    if (id == null) {
//      return null;
//    }
//    Key key = KeyFactory.stringToKey(id);
//    EntityManager em = entityManager();
//    try {
//      Book book = em.find(Book.class, key);
//      return book;
//    } finally {
//      em.close();
//    }
//  }
//
//  public Book find(String id) {
//    Book book = find(Book.class, id);
//    return book;
//  }
//
//  @Override
//  public Class<Book> getDomainType() {
//    return Book.class;
//  }
//
//  @Override
//  public String getId(Book domainObject) {
//    return domainObject.getId();
//  }
//
//  @Override
//  public Class<String> getIdType() {
//    return String.class;
//  }
//
//  @Override
//  public Object getVersion(Book domainObject) {
//    return domainObject.getVersion();
//  }
//
//  public void save(Book book) {
//    EntityManager em = entityManager();
//    try {
//      em.persist(book);
//    } catch (Exception e) {
//      e.printStackTrace();
//    } finally {
//      em.close();
//    }
//  }
//}
